1. Field of the Invention
This invention relates generally to the field of computer graphics and, more particularly, to graphics systems that render realistic images based on three-dimensional graphics data.
2. Description of the Related Art
A computer system typically relies upon its graphics system for producing visual output on a computer screen or display device. Early graphics systems were only responsible for taking what the processor produced as output and displaying it on the screen. In essence, they acted as simple translators or interfaces. Modern graphics systems, however, incorporate graphics processors with a great deal of processing power. The graphics systems now act more like coprocessors rather than simple translators. This change is due to the recent increase in both the complexity and amount of data being sent to the display device. For example, modern computer displays have many more pixels, greater color depth, and are able to display images with higher refresh rates than earlier models. Similarly, the images displayed are now more complex and may involve advanced rendering and visual techniques such as anti-aliasing and texture mapping.
As a result, without considerable processing power in the graphics system, the computer system's CPU would spend a great deal of time performing graphics calculations. This could rob the computer system of the processing power needed for performing other tasks associated with program execution, and thereby dramatically reduce overall system performance. With a powerful graphics system, however, when the CPU is instructed to draw a box on the screen, the CPU is freed from having to compute the position and color of each pixel. Instead, the CPU may send a request to the video card stating “draw a box at these coordinates.” The graphics system then draws the box, freeing the CPU to perform other tasks.
Since graphics systems typically perform only a limited set of functions, they may be customized and therefore far more efficient at graphics operations than the computer's general-purpose microprocessor. While early graphics systems were limited to performing two-dimensional (2D) graphics, their functionality has increased to support three-dimensional (3D) wire-frame graphics, 3D solids, and now includes support for textures and special effects such as advanced shading, fogging, alpha-blending, and specular highlighting.
The rendering ability of 3D graphics systems has been improving at a breakneck pace. A few years ago, shaded images of simple objects could only be rendered at a few frames per second, but today's systems support the rendering of complex objects at 60 Hz or higher. At this rate of increase, in the not too distant future graphics systems will literally be able to render more pixels in realtime than a single human's visual system can perceive. While this extra performance may be useable in multiple-viewer environments, it may be wasted in the more common single-viewer environments. Thus, a graphics system is desired which is capable of utilizing the increased graphics processing power to generate more realistic images.
While the number of pixels and frame rate is important in determining graphics system performance, another factor of equal or greater importance is the visual quality of the image generated. For example, an image with a high pixel density may still appear unrealistic if edges within the image are too sharp or jagged (also referred to as “aliased”). One well-known technique to overcome these problems is anti-aliasing. Anti-aliasing involves smoothing the edges of objects by shading pixels along the borders of graphical elements. More specifically, anti-aliasing entails removing higher frequency components from an image before they cause disturbing visual artifacts. For example, anti-aliasing may soften or smooth high contrast edges in an image by forcing certain pixels to intermediate values (e.g., around the silhouette of a bright object superimposed against a dark background).
Another visual effect that adds realism and improves the quality of the image is called “motion blur”. Motion blur is the ability to selectively blur objects that are in motion. For example, if a car is moving quickly across the screen, the scene will tend to appear more realistic if the car is blurred relative to the background.
Turning now to FIGS. 1A–C, an example sequence of frames is shown. Each frame represents the scene rendered at a particular point in time. Unfortunately, when these frames are displayed in rapid succession, the resulting image of the car moving across the scene appears unrealistic to most viewers because the car appears “too sharp” or too “in focus”.
Turning now to FIGS. 2A–B, a slightly more realistic set of frames is shown. In these frames, the background (i.e., the traffic light) is stationary while car is rendered across a range of different positions in each frame. When displayed in rapid succession, a series of frames such as those in FIGS. 2A–B will appear more realistic than the series of frames in FIGS. 1A–C.
Turning now to FIG. 3, an image with even more realistic motion blur is shown. as the figure illustrates. The motion of the car is conveyed in a more convincing manner with motion blur applied. The motion of the car is particularly apparent when compared with the sharp or in-focus nature of the traffic light.
Turning now to FIG. 4, another example image illustrating motion blur is shown. In this image, however, the viewpoint (i.e., also called the camera location) is panned to match the movement of the car. As a result, the stationary traffic light appears to be blurred while the rapidly moving car appears to be sharp and in-focus.
As these example images illustrate, a graphics system configured to generate images with motion blur would be particularly desirable. Furthermore, a system and method for rendering realistic images with ability to selectively “turn on” motion blur for specific objects in a scene (e.g., the traffic light or the car) is desired.
Another desirable visual effect for graphics systems is a depth of field effect. Depending upon the implementation, depth of field effect attempts to blur objects or areas of an image or scene that are either too close or too far away from a particular focal point. In many cases, the focal point and amount of blur is a function of camera or viewpoint parameters determined by the graphic artist creating the scene. For example, an artist may create a scene in which a bird is perched on the branch of a tree. The leaves in front of the bird, the leaves behind the bird, and the mountains in the background may all be blurred, while the bird may be in sharp focus. This effect may mimic the image seen through the lens of a camera that is focused on a particular object in the distance.
Yet another visual effect for graphics systems is a type of transparency effect referred to as a “screen door” effect. This effect attempts to mimic the image that results from viewing a scene from a distance through certain semi-opaque objects, for example a window screen or chain link fence. Another potential use for this effect is to emulate transparency and/or motion blur.
Advantageously, these effects allow artists and graphics programmers to improve the realism of images rendered on computer graphics systems. Most graphics systems, however, do not have hardware capable of implementing these effects in real time. As a result, these effects are typically only applied offline on a frame-by-frame basis using software applications (e.g., using Pixar's Renderman™ application). Since these effects tend to be highly dependent upon viewpoint location, the lack of hardware capable of performing these effects in real time prevents applications such as 3D games and simulators from taking full advantage of these effects. Thus a graphics system capable of performing motion blur, depth of field, and/or transparency effects in real time is needed.